package gold.digger;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by fanzhenyu02 on 2020/6/27.
 * common problem solver template.
 */
public class LC345 {
    public long startExecuteTime = System.currentTimeMillis();


    class Solution {
        public String reverseVowels(String s) {
            // 先将字符串转成字符数组（方便操作）
            // 以上是只针对 Java 语言来说的 因为 chatAt(i) 每次都要检查是否越界 有性能消耗
            char[] arr = s.toCharArray();
            int n = arr.length;
            int l = 0;
            int r = n - 1;
            while (l < r) {
                // 从左判断如果当前元素不是元音
                while (l < n && !isVowel(arr[l])) {
                    l++;
                }
                // 从右判断如果当前元素不是元音
                while (r >= 0 && !isVowel(arr[r])) {
                    r--;
                }
                // 如果没有元音
                if (l >= r) {
                    break;
                }
                // 交换前后的元音
                swap(arr, l, r);
                // 这里要分开写，不要写进数组里面去
                l++;
                r--;
            }
            // 最后返回的时候要转换成字符串输出
            return new String(arr);
        }

        private void swap(char[] arr, int a, int b) {
            char tmp = arr[a];
            arr[a] = arr[b];
            arr[b] = tmp;
        }

        // 判断是不是元音
        private boolean isVowel(char ch) {
            // 这里要直接用 return 语句返回，不要返回 true 或者 false
            return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'
                    || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
        }
    }


    public void run() {
        Solution solution = new Solution();
        List<Integer> list = new ArrayList<>();
        System.out.println(solution.toString());
    }

    public static void main(String[] args) throws Exception {
        LC345 an = new LC345();
        an.run();

        System.out.println("\ncurrent solution total execute time: " + (System.currentTimeMillis() - an.startExecuteTime) + " ms.");
    }
}
